//package com.zhuangjie.mvc.future;
//
//import org.springframework.web.context.request.RequestAttributes;
//import org.springframework.web.context.request.RequestContextHolder;
//
//import java.util.concurrent.CompletableFuture;
//import java.util.function.Supplier;
//
///**
// * 可继承上下文的CompletableFuture
// *
// * @author zhuangjie
// * @date 2024/01/03
// */
//public class CompletableFutureForInheritableContext<T> extends CompletableFuture<T>{
//    /**
//     * supplyAsync
//     * 会继承上下文
//     *
//     * @param supplier 供应商
//     * @return {@link CompletableFuture}<{@link U}>
//     */
//    public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier) {
//        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
//        return CompletableFuture.supplyAsync(() -> {
//            try {
//                // 在异步执行前设置上下文
//                RequestContextHolder.setRequestAttributes(requestAttributes);
//                // 异步执行供给函数
//                return supplier.get();
//            } finally {
//                // 确保在执行完毕后清理上下文
//                RequestContextHolder.resetRequestAttributes();
//            }
//        });
//    }
//
//}
